package com.gengzp.common.model.task.resp;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.gengzp.common.model.generic.resp.GenericResp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.Date;

/**
 * @ClassName SearchScheduledTaskResp
 * @Description 查询定时任务详情返回实体
 * @Author gengzp
 * @Date 2025/9/30 17:07
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class SearchScheduledTaskResp extends GenericResp {

    @Serial
    private static final long serialVersionUID = -7911554577233761347L;

    /**
     * 任务名
     */
    @ApiModelProperty(value = "任务名")
    private String taskName;

    /**
     * 任务描述
     */
    @ApiModelProperty(value = "任务描述")
    private String taskDescription;

    /**
     * 服务名
     */
    @ApiModelProperty(value = "服务名")
    private String serviceName;

    /**
     * 任务调用接口资源标识
     */
    @ApiModelProperty(value = "任务调用接口资源标识")
    private String uri;

    /**
     * 上次执行时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "上次执行时间")
    private Date lastExecuteTime;

    /**
     * 下次执行时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "下次执行时间")
    private Date nextExecuteTime;

    /**
     * cron表达式
     */
    @ApiModelProperty(value = "cron表达式")
    private String cronExpression;

    /**
     * cron表达式的描述
     */
    @ApiModelProperty(value = "cron表达式的描述")
    private String cronDescription;

    /**
     * 上次执行状态
     * {@link com.gengzp.common.enums.TaskExecuteStatusEnum}
     */
    @ApiModelProperty(value = "上次执行状态")
    private Integer lastExecuteStatus;

    /**
     * 上次执行状态枚举值
     */
    @ApiModelProperty(value = "上次执行状态枚举值")
    private String lastExecuteStatusValue;

    /**
     * 上次执行返回信息
     */
    @ApiModelProperty(value = "上次执行返回信息")
    private String lastExecuteResponse;

    /**
     * 开启状态
     * {@link com.gengzp.common.enums.YesNoEnum}
     */
    @ApiModelProperty(value = "开启状态")
    private Integer startStatus;

    /**
     * 开启状态枚举值
     */
    @ApiModelProperty(value = "开启状态枚举值")
    private String startStatusValue;

    /**
     * 执行次数
     */
    @ApiModelProperty(value = "执行次数")
    private Integer executeCount;

}
